// 应用配置文件
export const appConfig = {
  // 数据源配置
  dataSource: {
    // 是否使用虚拟数据 (true: 虚拟数据, false: 真实API)
    useMockData: false,

    // 注意：各模块的虚拟数据开关已简化，现在统一使用服务端策略管理系统
    modules: {}
  },

  // API配置
  api: {
    // 服务器API基础URL
    serverBaseUrl: 'http://localhost:8080',

    // 客户端API基础URL模板
    clientBaseUrlTemplate: 'http://{ip}:8090',

    // 请求超时时间
    timeout: 10000,

    // 重试次数
    retryCount: 3
  },

  // 界面配置
  ui: {
    // 表格分页大小
    pageSize: 20,

    // 刷新间隔（毫秒）
    refreshInterval: 30000,

    // 是否显示调试信息
    showDebugInfo: false
  }
}

// 获取配置项
export const getConfig = (path) => {
  const keys = path.split('.')
  let value = appConfig

  for (const key of keys) {
    if (value && typeof value === 'object' && key in value) {
      value = value[key]
    } else {
      return undefined
    }
  }

  return value
}

// 设置配置项
export const setConfig = (path, newValue) => {
  const keys = path.split('.')
  const lastKey = keys.pop()
  let target = appConfig

  for (const key of keys) {
    if (!target[key] || typeof target[key] !== 'object') {
      target[key] = {}
    }
    target = target[key]
  }

  target[lastKey] = newValue

  // 保存到localStorage
  localStorage.setItem('appConfig', JSON.stringify(appConfig))
}

// 从localStorage加载配置
export const loadConfig = () => {
  try {
    const saved = localStorage.getItem('appConfig')
    if (saved) {
      const savedConfig = JSON.parse(saved)
      Object.assign(appConfig, savedConfig)
    }
  } catch (error) {
    console.warn('加载配置失败，使用默认配置:', error)
  }
}

// 重置配置为默认值
export const resetConfig = () => {
  localStorage.removeItem('appConfig')
  location.reload()
}

// 检查是否使用虚拟数据
export const useMockData = (module = null) => {
  const globalMock = getConfig('dataSource.useMockData')

  if (module) {
    const moduleMock = getConfig(`dataSource.modules.${module}`)
    // 如果模块配置不存在，则使用全局配置
    return moduleMock !== undefined ? (globalMock && moduleMock) : globalMock
  }

  return globalMock
}

// 预警类型映射配置
export const alertTypeMapping = {
  // 主分类映射
  categories: {
    'behavior': '行为预警',
    'security': '安全违规',
    'offline': '离线预警',
    'system': '系统异常',
    'network': '网络预警',
    'traffic': '流量预警',
    'software': '软件预警',
    'file_transfer': '文件传输',
    'video': '视频分析'
  },

  // 子类型映射
  subtypes: {
    // 安全违规子类型
    'unauthorized_software': '未授权软件',
    "unauthorized_wifi":     "未授权wifi",
    "blocked_wifi":          "未授权wifi",
    'usb_violation': 'USB设备违规',
    'file_violation': '文件违规',
    'process_violation': '进程违规',

    // 行为异常子类型
    'heartbeat_timeout': '心跳超时',
    'keyboard_mouse_anomaly': '键盘鼠标活动异常',
    'inactive': '长时间无活动',
    'excessive_idle': '过度空闲',
    'abnormal_behavior': '异常行为',

    // 网络相关子类型
    'blocked_domain': '访问被阻止域名',
    'blocked_ip': '访问被阻止IP',
    'traffic_limit': '流量超限',
    'network_anomaly': '网络异常',

    // 系统相关子类型
    'system_error': '系统错误',
    'resource_limit': '资源超限',
    'service_down': '服务停止',

    // 离线相关子类型
    'client_offline': '客户端离线',
    'connection_lost': '连接丢失',
    'timeout': '超时'
  }
}

// 获取预警类型中文名称
export const getAlertTypeName = (type, subtype = null) => {
  if (subtype && alertTypeMapping.subtypes[subtype]) {
    return alertTypeMapping.subtypes[subtype]
  }

  if (alertTypeMapping.categories[type]) {
    return alertTypeMapping.categories[type]
  }

  return type || '未知类型'
}

// 获取预警类型标签颜色
export const getAlertTypeColor = (type, subtype = null) => {
  // 根据主分类确定颜色
  const colorMap = {
    'security': 'danger',
    'behavior': 'warning',
    'offline': 'danger',
    'system': 'danger',
    'network': 'primary',
    'traffic': 'warning',
    'software': 'info',
    'file_transfer': 'danger',
    'video': 'success'
  }

  // 特殊子类型的颜色覆盖
  const subtypeColorMap = {
    'heartbeat_timeout': 'danger',
    'unauthorized_software': 'danger',
    'keyboard_mouse_anomaly': 'warning',
    'excessive_idle': 'info'
  }

  if (subtype && subtypeColorMap[subtype]) {
    return subtypeColorMap[subtype]
  }

  return colorMap[type] || 'info'
}

// 初始化配置
loadConfig()
